package me.demo.sprite4m.action;

import me.demo.sprite4m.Mascot;
import me.demo.sprite4m.exception.LostGroundException;
import me.demo.sprite4m.exception.VariableException;

/**
 * 表示精灵动作的对象
 * 
 * 每隔一定时间被调用{@link #next(Mascot)}
 */
public interface Action {

	/**
	 * 启动动作时调用
	 * @param mascot 相关精灵对象
	 */
	public void init(Mascot mascot) throws VariableException;

	/**
	 * 次のフレームがあるかどうか調べる.
	 * @return 次のフレームがあるかどうか.
	 */
	public boolean hasNext() throws VariableException;
	
	/**
	 * マスコットを次のコマに進める.
	 * @throws LostGroundException 地面がない.
	 */
	public void next() throws LostGroundException, VariableException;
	
}
